package com.learning.spring.cloud.alibaba.hystrix.detail.web.service;

import com.learning.spring.cloud.alibaba.hystrix.detail.web.fallback.OrderFeignServiceFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.util.List;

/**
 * ClassName: OrderFeignService
 * Description: Feign 客户端实现声明式 REST 调用
 * <p>
 * 1、注解 @FeignClient 中的 name 是一个任意客户端服务名称，用于创建 Ribbon负载均衡（所以默认实现了负载）。因为 Eureka 的缘故，Ribbon 会把 name 属性解析成注册表中的服务
 * <p>
 * 2、可以使用 url属性指定请求的 URL 地址
 * <p>
 * Date: 2019/6/4 14:59 【需求编号】
 *
 * @author Sam Sho
 * @version V1.0.0
 */
@Component
@FeignClient(name = "01-ms-hystrix-order", fallback = OrderFeignServiceFallback.class)
public interface OrderHystrixFeignService {

    /**
     * 获取订单信息
     *
     * @param userId 用户ID
     * @return List 订单列表
     */
    @RequestMapping(value = "order/query/user/{userId}", method = RequestMethod.GET)
    List<String> queryOrderByUserId(@PathVariable("userId") Long userId);
}
